package com.ibatis.dao;

import java.io.Serializable;
import java.util.List;

public interface IBaseDAO {


 /**
  * 插入一个实体（在数据库INSERT一条记录）
  * @param <T>
  * @param sqlStr
  * @param entity
  */
    public abstract <T> T insert(String sqlStr,T entity);




    /**
     * 修改一个实体对象（UPDATE一条记录）
     * @param <T>
     * @param sqlStr
     * @param entity
     * @return
     */
    public abstract <T> int update(String sqlStr,T entity);



    /**
     * 根据指定的唯一列值，删除一行
     * @param <T>
     * @param sqlStr
     * @param primaryKey
     * @return
     */
    public abstract <T> int delete(String sqlStr,T primaryKey);



    /**
     * 查询指定的sql语句的行数
     * @param sqlStr
     * @return
     */
   public abstract int count(String sqlStr);



    /**
     * 按指定的唯一键，取一行
     * @param <T>
     * @param <PK>
     * @param sqlStr
     * @param primaryKey
     * @return
     */
    public abstract <T extends Object,PK> T getOne(String sqlStr,PK primaryKey);



    /**
     *  取全部记录
     * @param <T>
     * @param sqlStr
     * @return
     */
    public abstract <T> List<T> selectAll(String sqlStr);



    /**
     * 批量添加
     * @param <T>
     * @param sqlStr
     * @param list
     */
    public abstract <T> void batchInsert(String sqlStr,final List<T> list);



    /**
     * 批量修改
     * @param <T>
     * @param sqlStrs
     * @param list
     */
    public abstract <T> void batchUpdate(String sqlStrs,final List<T> list);



   /**
    * 批量删除
    * @param <T>
    * @param sqlStr
    * @param list
    */
   public abstract <T> void batchDelete(String sqlStr,final List<T> list);





}

